#ifndef ALGO_HEADER_FILE
#define ALGO_HEADER_FILE

#define MTPath "/mnt/meiteng"

typedef int (*init_func)(void* algo);
typedef void* (*compute_func)(void* algo, unsigned char* data, int width, int height);
typedef void (*debug_func)(unsigned char* data, int width, int height);
typedef void* (*analysis_func)(void* single_frame_result);
typedef int (*response_func)(void* arg, void* analysis_result);
typedef void (*destroy_func)(void* algo);

typedef struct algo_info {
    char* name; // 算法名称
    init_func init;
    compute_func compute;
    debug_func debug;
    analysis_func analysis;
    response_func response;
    destroy_func destroy; 
    int channel; // 执行通道 -1无 0监控 1工业
    int id; // 算法id
    void* mock_data; //模拟数据
    int mock_len; //模拟数据长度 
} algo_info;


// 直接暴露?
extern algo_info algotable[10];

int start_task(const char* name, int channel, int* mock_seq, int mock_len);

void debug_task_once();

void stop_task();

algo_info* get_task_algo();

#endif